// 在这个js中配置axios
import axios from 'axios'
let http = axios.create({
    timeout: 5000
})
//  Vue.prototype.$http=http

// 请求拦截器
http.interceptors.request.use((config) => {
    // config 请求配置
    let token = sessionStorage.getItem('token') || ''
    // 如果缓存有东西返回对应的内容,没有就返回空字符串
    if (token) {
        // 说明用户已经登陆
        // 说明token值放到请求头当中去
        // 以追加属性的形式给请求头添加 x-token
        config.headers['x-token'] = token
        // 添加菊花图--loading图
    }
    // 记得操作完了配置之后要return它
    // 作用 告诉拦截器 你修改了它
    return config
})

// 响应拦截器
http.interceptors.response.use((response) => {
    // response里面拿到的内容就是后台返回的内容
    console.log(response, 'response的数据');
    return response.data.result

}, (error) => {
    // console.log(error.response, '错误返回的内容');
    return Promise.reject(
        (function (resp) {
            console.group(`%c【代码${resp.status}: ${resp.data.msg}】`, 'color:blue;font-size:15px;');
            let inputdata = resp.config.data ? JSON.parse(resp.config.data) : undefined;
            let inputparams = resp.config.params ? resp.config.params : undefined;
            console.log(
                `%cPREVIEW:\n`, 'color:green;font-weight:bold;font-size:18px',
                `Data:`, inputdata, `\n`,
                `Params:`, inputparams, `\n`, {
                    Method: resp.config.method
                }, `\n`, {
                    Url: resp.config.url
                }, `\n`, {
                    Envir: process.env.NODE_ENV
                }, `\n`, {
                    Type: resp.config.headers['Content-Type']
                }, `\n`, {
                    msg: resp.data.msg
                }, `\n`, {
                    status: resp.status
                }, `\n`,
            );
            console.groupEnd();
        })(error.response)

    )
})

export default http